/*
Copyright (c) [2019年5月1日] [吴超]
[MBT_Studio] is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
		 http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details.
*/
#pragma once

#include "节点/节点.h"

#include "节点/插座/C_数值插座.h"
#include "节点/插座/C_单值矢量插座.h"
#include "节点/插座/list/list数值插座.h"



class C_文件路径节点 : public C_节点基类 {

public:
	C_文件路径节点(S_设备环境& ctx);
	~C_文件路径节点();

	S_Props	m_文件路径;

	bool	f_update();
	std::string	DEF_节点编译函数;

	void	f_读取(FILE* f);
	void	f_写入(FILE* f);
	void	f_Copy(const C_节点基类* node);
};

C_节点基类* f_node_创建文件路径节点(S_设备环境& ctx, C_节点树* 子节点树);
C_节点基类* f_node_加载文件路径节点(S_设备环境& ctx, FILE* f);
void		f_node_保存文件路径节点(C_节点基类* n, FILE* f);



class C_行字符串变量节点 : public C_节点基类 {

public:
	C_行字符串变量节点(S_设备环境& ctx);
	~C_行字符串变量节点();

	S_Props	m_初始值;

	bool	f_update();
	std::string	DEF_节点编译函数;

	void	f_读取(FILE* f);
	void	f_写入(FILE* f);
	void	f_Copy(const C_节点基类* node);
};

C_节点基类* f_node_创建行字符串变量节点(S_设备环境& ctx, C_节点树* 子节点树);
C_节点基类* f_node_加载行字符串变量节点(S_设备环境& ctx, FILE* f);
void		f_node_保存行字符串变量节点(C_节点基类* n, FILE* f);




class C_数值转字符串节点 : public C_节点基类 {

public:
	C_数值转字符串节点(S_设备环境& ctx);
	~C_数值转字符串节点();

	S_Props	m_数值类型;

	bool	f_update();
	std::string	DEF_节点编译函数;

	void	f_读取(FILE* f);
	void	f_写入(FILE* f);
	void	f_Copy(const C_节点基类* node);
};

C_节点基类* f_node_创建数值转字符串节点(S_设备环境& ctx, C_节点树* 子节点树);
C_节点基类* f_node_加载数值转字符串节点(S_设备环境& ctx, FILE* f);
void		f_node_保存数值转字符串节点(C_节点基类* n, FILE* f);




class C_合并字符串节点 : public C_节点基类 {

public:
	C_合并字符串节点(S_设备环境& ctx);
	~C_合并字符串节点();

	S_Props	m_初始值;

	bool	f_update();
	std::string	DEF_节点编译函数;

	void	f_读取(FILE* f);
	void	f_写入(FILE* f);
	void	f_Copy(const C_节点基类* node);
};

C_节点基类* f_node_创建合并字符串节点(S_设备环境& ctx, C_节点树* 子节点树);
C_节点基类* f_node_加载合并字符串节点(S_设备环境& ctx, FILE* f);
void		f_node_保存合并字符串节点(C_节点基类* n, FILE* f);
























